package com.wicket.okrframework.biz.service.dto.common;


import com.wicket.okrframework.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc OrgPositionGradeDto
 * @使用场景
 */
@Data
public class OrgPositionGradeDto extends BaseDto implements Serializable {

    /**
     * 职务级别ID:
     */
    @NotNull(message = "职务级别ID不能为空")
    @ApiModelProperty("职务级别ID")
    private String positionGradeId;

    /**
     * 职务级别名称:
     */
    @NotNull(message = "职务级别名称不能为空")
    @ApiModelProperty("职务级别名称")
    private String positionGradeName;
    /**
     * 岗位类型ID:
     */
    @ApiModelProperty("岗位类型ID")
    private String stationTypeId;
    /**
     * 岗位类型名称:
     */
    @ApiModelProperty("岗位类型名称")
    private String stationTypeName;
    /**
     * 职务级别编号:
     */
    @ApiModelProperty("职务级别编号")
    private String positionGradeNumber;
    /**
     * 是否设置等级范围:
     */
    @ApiModelProperty("是否设置等级范围")
    private String isSetGrade;
    /**
     * 排序:
     */
    @ApiModelProperty("排序")
    private Long orderNumber;
    /**
     * 批次ID:
     */
    @ApiModelProperty("批次ID")
    private String batchId;
    /**
     * 批次开始时间:
     */
    @ApiModelProperty("批次开始时间 ")
    private Date batchStartTime;
    /**
     * 批次结束时间:
     */
    @ApiModelProperty("批次结束时间")
    private Date batchEndTime;
    /**
     * 主体生命周期:
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;
    /**
     * 是否存档:
     */
    @ApiModelProperty("是否存档")
    private String isArchive;
    /**
     * 存档类型:
     */
    @ApiModelProperty("存档类型")
    private String archivngType;
    /**
     * 是否未来:
     */
    @ApiModelProperty("是否未来")
    private String isEditing;
    /**
     * 批次下是否更新:
     */
    @ApiModelProperty("批次下是否更新")
    private String isUpdate;
    /**
     * 批次下更新状态:
     */
    @ApiModelProperty("批次下更新状态")
    private String updateStatus;
    /**
     * 操作人就职记录ID:
     */
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;
    /**
     * 操作时间:
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;

    @Override
  public boolean equals(Object o) {
      if (this == o) return true;
      if (o == null || getClass() != o.getClass()) return false;
      if (!super.equals(o)) return false;
      OrgPositionGradeDto that = (OrgPositionGradeDto) o;
      return  positionGradeId == that.positionGradeId&&positionGradeName == that.positionGradeName&&stationTypeId == that.stationTypeId&&stationTypeName == that.stationTypeName&&positionGradeNumber == that.positionGradeNumber&&isSetGrade == that.isSetGrade&&orderNumber == that.orderNumber&&batchId == that.batchId&&batchStartTime == that.batchStartTime&&batchEndTime == that.batchEndTime&&subjectLifeCycle == that.subjectLifeCycle&&isArchive == that.isArchive&&archivngType == that.archivngType&&isEditing == that.isEditing&&isUpdate == that.isUpdate&&updateStatus == that.updateStatus&&operationInductionId == that.operationInductionId&&operateTime == that.operateTime;
    }

    @Override
  public int hashCode() {
      return Objects.hash(super.hashCode(), positionGradeId,positionGradeName,stationTypeId,stationTypeName,positionGradeNumber,isSetGrade,orderNumber,batchId,batchStartTime,batchEndTime,subjectLifeCycle,isArchive,archivngType,isEditing,isUpdate,updateStatus,operationInductionId,operateTime);
    }

}
